11941
19608
这个问题已经在这里有了答案:
Express JS-无法重定向
(4个答案)
7年前关闭。
我在下面的中间件中使用passportjs。假设在用户请求某些东西时检查用户是否登录。如果未登录,则应将其重定向到登录页面。
我的请求路线如下:
app.put('/ fantasyteams /:fantasyTeamId',auth.requiresLogin,fantasyteams.update);
当用户尝试更新网站中名为Fantasy Team的资源时,将调用此路由
auth.requiresLogin是一种中间件,如下所示:
Exports.requiresLogin = function(req,res,next){
如果(req.isAuthenticated()){
返回next()
}
返回res.redirect(“ / signin”);
};
登录我的用户后,我通过删除会话cookie来模拟会话到期。之后,我通过网站提出了“ / fantasyteams / 123”请求,以更新幻想团队编号123。
fantasyteams.update仅仅是mongodb / mongoose保存操作:
exports.update = function(req,res){
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend(fantasyteam,req.body);
fantasyteam.save(function(err){
res.jsonp(fantasyteam);
});
};
不出所料,上面的路由处理程序(app.put ...)捕获了请求,将其传递给auth.requiresLogin中间件以检查用户是否登录。因此事实证明,由于我删除了该用户,因此未登录他的会话Cookie。 res.redirect如预期那样被调用。但是,该网站不会重定向到登录页面。我在node.js命令日志中看到了这一点:
PUT /登录404 328ms
我做错什么了? 
看来问题在于您没有用于PUT / signin的路由处理程序。原始请求是放置请求,因此当重定向时,它仍然是来自浏览器的相同“放置”请求的一部分。只需使用app.all('/ signin')添加一个放置/发布/处理程序
3
|
不是您要找的答案?浏览标记为node.js会话cookie的其他问题,这些护照表达了password.js或提出您自己的问题。